import json
import re

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

from selenium.webdriver.support.wait import WebDriverWait
from GLMsAPIWrapper import GLMsAPIWrapper


def get_driver():
    # 初始化WebDriver
    driver = webdriver.Edge()  # Chrome浏览器 , Edge浏览器, Firefox浏览器

    try:
        # 打开目标网址
        url = "https://www.sporttery.cn/jc/jsq/zqspf/"
        driver.get(url)

        # 等待页面加载完成，这里可以根据实际情况调整等待时间或使用显式等待
        time.sleep(5)  # 简单的等待时间，生产环境建议使用WebDriverWait
        # 显式等待直到".bDateTd"元素出现
        wait = WebDriverWait(driver, 10)

        # 定位并提取数据
        match_rows = driver.find_elements(By.CSS_SELECTOR, 'table#mainTbl tr.listTr')
        get_data = ""

        for row in match_rows:
            # date_col = row.find_element(By.CLASS_NAME, 'bDateTd')
            match_time = row.find_element(By.XPATH, ".//td[text()[contains(.,'-')]]").text.strip()
            teams = row.find_elements(By.TAG_NAME, 'a')
            home_team = teams[1].text.strip()  # 第二个a标签通常是主队
            away_team = teams[3].text.strip()  # 第四个a标签通常是客队

            # 使用正则表达式匹配月-日格式，例如06-12
            match = re.search(r'\b\d{2}-\d{2}\b', match_time)

            dt = get_Chat(f" 时间: {match.group()}, 主队: {home_team} vs 客队: {away_team}")
            try:
                print(f" 时间: {match.group()}, 主队: {home_team} vs 客队: {away_team} , 预测结果: {dt['prediction']}")
                get_data += f" 时间: {match.group()}, 主队: {home_team} vs 客队: {away_team} , 预测结果: {dt['prediction']}\n"
            except:
                print(f" 时间: {match.group()}, 主队: {home_team} vs 客队: {away_team} , 预测建议: {dt}")
                get_data += f" 时间: {match.group()}, 主队: {home_team} vs 客队: {away_team} , 预测建议: {dt}\n"
        return get_data

    finally:
        # 关闭浏览器
        driver.quit()


def get_Chat(data):
    # 你的 API Key 和 API Secret
    your_api_key = "Key"
    your_api_secret = "Secret"
    # 你的智能体 ID 和消息内容
    assistant_id = "智能ID"

    # 创建 GLMsAPIWrapper 实例
    api_wrapper = GLMsAPIWrapper(your_api_key, your_api_secret, assistant_id)

    prompt = ("只能给出主队胜或者客队胜，又或者平，不能出现其他词,输出格式json格式，json格式比如：{'home_team': '德国','away_team': '苏格兰',，'prediction': "
              "'主队胜'}，提供的信息：") + data

    # 发送消息到智能体并获取响应
    response = api_wrapper.send_message(prompt)

    content = re.search(r'```json(.*?)```', response, re.DOTALL).group(1)
    if content is None:
        print(response)
        return response
    else:
        json_content = content.replace("'", '"')
        js_data = json.loads(json_content)
        # print(js_data['prediction'])
        return js_data


if __name__ == "__main__":
    data = get_driver()
    # 写到文件中，text格式写，text名为{年-月-日}，如果已存在则覆盖
    with open(f"{time.strftime('%Y-%m-%d', time.localtime())}.txt", "w", encoding="utf-8") as f:
        f.write(data)
